package mao.mashibing.juc.jucutil;

import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.LockSupport;

/*
user：mao
data：2020/11/22
explain：unpark可以先于park调用，可以理解为内部维护计数器
unpark一次数据加一，park一次数据减去一，只要数据大于等于零‘线程就不会
停止、。
*/
public class TestLockSupport {
    public static void main(String[] args) throws Exception{
        Thread t = new Thread(()->{
            for (int i = 0; i < 10; i++) {
                try {
                    TimeUnit.SECONDS.sleep(1);
                    if (i == 5 || i == 3){
                        LockSupport.park();
                    }
                    System.out.println("第"+i+"个");
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });
        t.start();
        LockSupport.unpark(t);
        TimeUnit.SECONDS.sleep(10 );
        System.out.println("10秒了");
        LockSupport.unpark(t);

    }
}
